home *** CD-ROM | disk | FTP | other *** search
/ The Great Turkey Cookbook / The Great Turkey cookbook.iso / cwcd.mst < prev    next >
Text File  |  1995-06-09  |  16KB  |  484 lines

  1. '*********************************************************************
  2. '*          CookWorks Installation Script
  3. '*      Designed for use with Microsoft Setup
  4. '*
  5. '*  (c) 1993, 1994 Pinpoint Publishing. All Rights Reserved
  6. '*********************************************************************
  7.  
  8. '$DEFINE DEBUG  ''Define for script development/debugging
  9.  
  10. '$INCLUDE 'setupapi.inc'
  11. '$INCLUDE 'msdetect.inc'
  12. '$INCLUDE 'cwfc.inc'
  13.  
  14. INIT:
  15.     CUIDLL$ = "mscuistf.dll"            ''Custom user interface dll
  16.     HELPPROC$ = "FHelpDlgProc"          ''Help dialog procedure
  17.     MDLSSDLG$ = "FModelessDlgProc"  ''Modeless dialog box procedure
  18.     SRCHDAT$ =  "CB40.DAT"
  19.     SRCHEXE$ =  "CB40.EXE"
  20.     CWEXE$ = "cookwrks.exe"
  21.     MCBEXE$ = "cookbook.exe"
  22.  
  23.     INI$ = "PINPOINT.INI"
  24.     SECT$ = "Micro Cookbook"
  25.     VIEW$ = "CookWorks from Pinpoint Publishing, [CWEXE], 1.0, 1994-03-04-00-00-00, 126144"
  26.     EDIT$ = "Micro Cookbook 4.0, [MCBEXE], 4.03, 1993-07-30-00-00-00, 75472"
  27.  
  28.     '' INSTALL.INI section and key constants
  29.     INSTALLSECT$ = "Installation"
  30.     INSTALL_SUBDIR$ = "SubDir"      '' Subdirectory location for this partciular collection.
  31.     INSTALL_ICON_LBL$ = "IconTitle"   '' Title for the icon for this collection
  32.  
  33.     DTField% = 4
  34.     EXEField% = 2
  35.  
  36.     i%=ShowWindow (HWndFrame(), SW_SHOWMAXIMIZED)
  37.     SetBitmap CUIDLL$, LOGO
  38.  
  39.     IF i%=0 THEN
  40.         GOTO QUIT
  41.     END IF
  42.  
  43.     SetTitle "CookWorks - Electronic Books"
  44.  
  45.     szSrcPath$ = GetSymbolValue("STF_SRCINFPATH")
  46.     IF szSrcPath$ = "" THEN
  47.         szSrcPath$ = GetSymbolValue("STF_CWDDIR")
  48.     END IF
  49.     
  50.     INSTALL_INI$ = MakePath (szSrcPath$, "INSTALL.INI")
  51.     szInf$ = MakePath (szSrcPath$, "CWFC.INF")
  52.     
  53.     ReadInfFile szInf$
  54.  
  55.     '' Installer's configuration information .INI file
  56.  
  57.    INIPRESENT% = CheckForIni
  58. ''    MCBPRESENT% = CheckForMcb
  59.  
  60. INSUFFPROC:
  61.     IF GetProcessorType() < 3 THEN
  62.         i% = DoMsgBox("CookWorks requires a 386 or higher processor to operate.","Setup Error!",MB_TASKMODAL+MB_ICONHAND+MB_OK)
  63.         GOTO QUIT
  64.     END IF
  65.  
  66. INSUFFWINVER:   '' Check for sufficient revision of Windows.
  67.     IF GetWindowsMajorVersion() < 3 OR (GetWindowsMajorVersion() = 3 AND GetWindowsMinorVersion() < 1) THEN
  68.             i% = DoMsgBox("CookWorks requires Windows 3.1 or later to operate.","Setup Error!",MB_TASKMODAL+MB_ICONHAND+MB_OK)
  69.             GOTO QUIT
  70.     END IF
  71.  
  72. NOMOUSE:    '' Check for presence of mouse (not required, but recommended)
  73.     IF HasMouseInstalled() = 0 THEN
  74.         i% = DoMsgBox("Setup did not detect the presence of a mouse. Although it is not required, a mouse is recommended for using Cook Works.","Setup Warning",MB_TASKMODAL+MB_ICONINFORMATION+MB_OK)
  75.     END IF
  76.  
  77. OPTCUR$ = "1"
  78. DEST$ = "C:\COOKWRKS"
  79.  
  80. '$IFDEF DEBUG
  81.     i% = SetSizeCheckMode(scmOnIgnore)    '' could use scmOff; def = scmOnFatal
  82.     WinDrive$ = MID$(GetWindowsDir, 1, 1)
  83.     IF IsDriveValid(WinDrive$) = 0 THEN
  84.         i% = DoMsgBox("Windows drive ('"+WinDrive$+"') is not a valid drive.", "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  85.         GOTO QUIT
  86.     END IF
  87. '$ENDIF ''DEBUG
  88.  
  89.  
  90. WELCOME:
  91.     sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", APPHELP, HELPPROC$)
  92.     UIPop 1
  93.     IF sz$ <> "CONTINUE" THEN
  94.         GOSUB ASKQUIT
  95.         GOTO WELCOME
  96.     END IF
  97.  
  98. ''MCBMODE:
  99. ''    IF MCBPRESENT% > 1 THEN
  100. ''        sz$ = UIStartDlg(CUIDLL$, MCB_DETECTED, "FInfoDlgProc", MCB_HELP, HELPPROC$)
  101. ''        IF sz$ = "CONTINUE" THEN
  102. ''            MCBINSTMODE$ = "UPDATE"
  103. ''        ELSE
  104. ''            MCBINSTMODE$ = "NONE"
  105. ''        END IF
  106. ''        UIPop 1
  107. ''    ELSE
  108. ''        IF MCBPRESENT% = 0 THEN
  109. ''            MCBDEST$ = "C:\COOK4"
  110. ''            sz$ = UIStartDlg(CUIDLL$, NOMCB, "FInfoDlgProc", NEWMCBHELP, HELPPROC$)
  111. ''            IF sz$ = "CONTINUE" THEN
  112. ''                MCBINSTMODE$ = "FULL"
  113. ''            ELSE
  114. ''                MCBINSTMODE$ = "NONE"
  115. ''            END IF
  116. ''            UIPop 1
  117. ''        END IF
  118. ''    END IF
  119.  
  120. GETPATH:
  121.     SetSymbolValue "EditTextIn", DEST$
  122.     SetSymbolValue "EditFocus", "END"
  123. GETPATHL1:
  124.     sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", APPHELP, HELPPROC$)
  125.     DEST$ = GetSymbolValue("EditTextOut")
  126.     UIPop 1
  127.  
  128.     IF sz$ = "CONTINUE" THEN
  129.         IF IsDirWritable(DEST$) = 0 THEN
  130.             GOSUB BADPATH
  131.             GOTO GETPATHL1
  132.         END IF
  133.     ELSEIF sz$ = "REACTIVATE" THEN
  134.         GOTO GETPATHL1
  135.     ELSE
  136.         GOSUB ASKQUIT
  137.         GOTO GETPATH
  138.     END IF
  139.  
  140.     szIconLabel$ = GetIniKeyString (INSTALL_INI$, INSTALLSECT$, INSTALL_ICON_LBL$)
  141.     szPrjDir = GetIniKeyString (INSTALL_INI$, INSTALLSECT$, INSTALL_SUBDIR$)
  142.     if szPrjDir = "" then
  143.         i% = DoMsgBox("Can't find ini file", "Tmp msg", MB_OK)
  144.     end if    
  145.     DEST$= MakePath(DEST$, szPrjDir)
  146.  
  147. ''OVERWRITE:
  148. ''    IF (MCBPRESENT% > 0 AND McbInPath(DEST$)) THEN
  149. ''        sz$=UIStartDlg(CUIDLL$, MCB_OVERWRITE,"FInfoDlgProc",APPHELP, HELPPROC$)
  150. ''        UIPop 1
  151. ''        DEST$="C:\CWFC"
  152. ''        GOTO GETPATH
  153. ''    END IF
  154.  
  155. ''MCBINSTALL:
  156. ''    IF MCBINSTMODE$ = "FULL" THEN
  157. ''
  158. ''    MCBPATH:
  159. ''        SetSymbolValue "EditTextIn", MCBDEST$
  160. ''        SetSymbolValue "EditFocus", "END"
  161. ''    MCBPATHL1:
  162. ''        sz$ = UIStartDlg(CUIDLL$, MCBPATH, "FEditDlgProc", APPHELP, HELPPROC$)
  163. ''        MCBDEST$ = GetSymbolValue("EditTextOut")
  164. ''        UIPop 1
  165. ''
  166. ''        IF sz$ = "CONTINUE" THEN
  167. ''            IF IsDirWritable(DEST$) = 0 THEN
  168. ''                GOSUB BADPATH
  169. ''                GOTO MCBPATHL1
  170. ''            END IF
  171. ''        ELSEIF sz$ = "REACTIVATE" THEN
  172. ''            GOTO MCBPATHL1
  173. ''        ELSE
  174. ''            GOSUB ASKQUIT
  175. ''            GOTO MCBPATH
  176. ''        END IF
  177. ''
  178. ''    END IF
  179.  
  180. GETSPACE:
  181.     SetSymbolValue "EditTextIn", DEST$  '' Change the default path back to install path
  182.     SetSymbolValue "EditFocus", "END"
  183.     DestDrive$=MID$(DEST$,1,1)
  184.  
  185. ''    IF MCBINSTMODE$ = "FULL" THEN
  186. ''        MCBSPACE& = FULL
  187. ''    END IF
  188.  
  189. ''    IF MCBINSTMODE$ = "UPDATE" THEN
  190. ''        MCBSPACE& = UPDATE
  191. ''    END IF
  192.  
  193. ''    IF MCBINSTMODE$ = "NONE" THEN
  194. ''        MCBDEST$ = ""
  195. ''    END IF
  196.  
  197. ''    IF MCBDEST$ <> "" THEN
  198. ''        MCBDestDrive$=MID$(MCBDEST$,1,1)
  199. ''    ELSE
  200. ''        MCBDestDrive$ = ""
  201. ''    END IF
  202.  
  203.     i%=IsDriveValid(DestDrive$)     '' Check for valid drive, first off
  204.     IF i%=0 THEN
  205.         GOSUB BADPATH
  206.         GOTO GETPATHL1
  207.     END IF  '' Already checked for a valid drive to install update files.
  208.  
  209. ''    IF DestDrive$ = MCBDestDrive$ THEN
  210. ''        TSpace& = CWSPACE + MCBSPACE
  211. ''    ELSE
  212.         TSpace& = CWSPACE
  213. ''    END IF
  214.  
  215.     j& = GetFreeSpaceForDrive(DestDrive$)           '' Check for the amount of free
  216.  
  217. ''    IF DestDrive$ = MCBDestDrive$ THEN
  218. ''        IF j&=0 THEN                                    '' space. If 0, drive isn't valid
  219. ''            GOSUB BADPATH
  220. ''            GOTO GETPATHL1
  221. ''        END IF
  222. ''    ELSE
  223. ''        IF MCBDEST$ <> "" THEN
  224. ''            k& = GetFreeSpaceForDrive(MCBDestDrive$)
  225. ''            IF j& = 0 OR k& = 0 THEN
  226. ''                GOSUB BADPATH
  227. ''                GOTO GETPATHL1
  228. ''            END IF
  229. ''
  230. ''            IF k& < MCBSPACE& AND MCBINSTMODE$="FULL" THEN
  231. ''                sz$ = UIStartDlg(CUIDLL$, NOFREEFORFULL, "FEditDlgProc", APPHELP, HELPPROC$)
  232. ''                UIPop 1
  233. ''                MCBDEST$ = ""
  234. ''            END IF
  235.  
  236. ''            IF k& < MCBSPACE& AND MCBINSTMODE$="UPDATE" THEN
  237. ''                sz$ = UIStartDlg(CUIDLL$, NOFREEFORUPDATE, "FEditDlgProc", APPHELP, HELPPROC$)
  238. ''                UIPop 1
  239. ''                MCBDEST$ = ""
  240. ''            END IF
  241.  
  242. ''        END IF
  243. ''    END IF
  244.  
  245. ''    IF j& < TSpace& THEN            '' Handle insufficient space on selected drive.
  246.  
  247. ''        IF MCBDEST$ <> "" AND MCBINSTMODE$="FULL" THEN
  248. ''            sz$ = UIStartDlg(CUIDLL$, NOFREEFORFULL,"FEditDlgProc", APPHELP, HELPPROC$)
  249. ''        END IF
  250.  
  251. ''        IF MCBDEST$ <> "" AND MCBINSTMODE$="UPDATE" THEN
  252. ''            sz$ = UIStartDlg(CUIDLL$, NOFREEFORUPDATE,"FEditDlgProc", APPHELP, HELPPROC$)
  253. ''        END IF
  254.  
  255. ''        IF MCBDEST="" THEN
  256. ''            sz$ = UIStartDlg(CUIDLL$, NOFREESPACE,"FEditDlgProc", APPHELP, HELPPROC$)
  257. ''        END IF
  258.  
  259. ''        UIPop 1
  260. ''        GOTO GETPATHL1
  261. ''    END IF
  262.  
  263. '' *************************************************
  264.  
  265.     Install szIconLabel$
  266.  
  267. '' *************************************************
  268.  
  269. QUIT:
  270.     ON ERROR GOTO ERRQUIT
  271.  
  272.     IF ERR = 0 THEN
  273.         dlg% = EXITSUCCESS
  274.     ELSEIF ERR = STFQUIT THEN
  275.         dlg% = EXITQUIT
  276.     ELSE
  277.         dlg% = EXITFAILURE
  278.     END IF
  279. QUITL1:
  280.     sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  281.     IF sz$ = "REACTIVATE" THEN
  282.         GOTO QUITL1
  283.     END IF
  284.     UIPop 1
  285.     END
  286.  
  287. ERRQUIT:
  288.     i% = DoMsgBox("Setup sources were corrupted, call (707) 523-0400!", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  289.     END
  290.  
  291. BADPATH:
  292.     sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  293.     IF sz$ = "REACTIVATE" THEN
  294.         GOTO BADPATH
  295.     END IF
  296.     UIPop 1
  297.     RETURN
  298.  
  299. ASKQUIT:
  300.     sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
  301.  
  302.     IF sz$ = "EXIT" THEN
  303.         UIPop 1
  304.         ERROR STFQUIT
  305.     END IF
  306.  
  307.     IF sz$ = "REACTIVATE" THEN
  308.         GOTO ASKQUIT
  309.     ELSE
  310.         UIPop 1
  311.     END IF
  312.  
  313.     RETURN
  314.  
  315.  
  316.  
  317. '**
  318. '** Purpose:
  319. '**     Builds the copy list and performs all installation operations.
  320. '** Arguments:
  321. '**     none.
  322. '** Returns:
  323. '**     none.
  324. '*************************************************************************
  325. SUB Install (szIconLabel$) STATIC
  326.  
  327.     '' Create/Adjust the settings of the .INI file.
  328. ''    IF MCBINSTMODE$ = "NONE" THEN
  329. ''        EDIT$ = ""
  330. ''    END IF
  331.  
  332.     i% = MakeIni
  333.  
  334.     IF i% = False THEN  '' .INI file is already present
  335.         sz$ = "Viewer"
  336.         InsertExeName "[CWEXE]", VIEW$, MakePath(DEST$, CWEXE$)
  337.         SetIniToNewest sz$,VIEW$
  338. ''        IF MCBINSTMODE$ <> "NONE" THEN
  339. ''            sz$="Editor"
  340. ''            InsertExeName "[MCBEXE]", EDIT$, MakePath(MCBDEST$, MCBEXE$)
  341. ''            SetIniToNewest sz$,EDIT$
  342. ''        END IF
  343.     END IF
  344.  
  345.     szSrcDir = MakePath(GetSymbolValue("STF_SRCDIR"), szPrjDir)
  346.     CreateDir DEST$, cmoNone
  347.  
  348.     BMPDIR$ = MakePath(DEST$, "\BITMAPS")
  349.     CreateDir BMPDIR$, cmoNone
  350.  
  351.     AddSectionFilesToCopyList "Root", szSrcDir, DEST$
  352.     AddSectionFilesToCopyList "Bitmaps", MakePath(szSrcDir$, "\BITMAPS"), BMPDIR$
  353.  
  354. ''    IF MCBINSTMODE$ <> "NONE" THEN
  355.  
  356. ''        IF MCBINSTMODE$ = "FULL" THEN
  357. ''            CreateDir MCBDEST$, cmoNone
  358. ''            AddSectionFilesToCopyList "CB4", SrcDir$, MCBDEST$
  359. ''        END IF
  360.  
  361. ''        IF MCBINSTMODE$ = "UPDATE" AND MCBPRESENT% > 1 THEN
  362. ''            AddSectionFilesToCopyList "Update", SrcDir$, MCBDEST$
  363. ''        END IF
  364.  
  365. ''        IF MCBINSTMODE$ = "UPDATE" AND MCBPRESENT% = 2 THEN
  366. ''            AddSectionFilesToCopyList "DummyUpdate", SrcDir$, MCBDEST$
  367. ''        END IF
  368.  
  369. ''    END IF
  370.  
  371.     CopyFilesInCopyList
  372.  
  373. ''    IF MCBINSTMODE$ = "UPDATE" THEN
  374. ''        sz$=UIStartDlg(CUIDLL$, CB4_COPYINPROGRESS, MDLSSDLG$, 0, "")
  375. ''        i% = ShowWaitCursor()
  376. ''        CopyFile MakePath(DEST$, "CB4002.DBF"), MakePath(MCBDEST$, "UP4002.DBF"), cmoOverwrite, 0
  377. ''        CopyFile MakePath(DEST$, "CB4002.FPT"), MakePath(MCBDEST$, "UP4002.FPT"), cmoOverwrite, 0
  378. ''        CopyFile MakePath(DEST$, "CB4005.DBF"), MakePath(MCBDEST$, "UP4005.DBF"), cmoOverwrite, 0
  379. ''        CopyFile MakePath(DEST$, "CB4006.DBF"), MakePath(MCBDEST$, "UP4006.DBF"), cmoOverwrite, 0
  380. ''        IF MCBPRESENT% = 2 THEN
  381. ''            RenameFile MakePath(MCBDEST$, "CB3D.DBF"), "UP4003.DBF"
  382. ''            RenameFile MakePath(MCBDEST$, "CB4D.DBF"), "UP4004.DBF"
  383. ''        END IF
  384. ''        IF MCBPRESENT% = 3 THEN
  385. ''            CopyFile MakePath(DEST$, "CB4003.DBF"), MakePath(MCBDEST$, "UP4003.DBF"), cmoOverwrite, 0
  386. ''            CopyFile MakePath(DEST$, "CB4004.DBF"), MakePath(MCBDEST$, "UP4004.DBF"), cmoOverwrite, 0
  387. ''        END IF
  388. ''        RestoreCursor i%
  389. ''        UIPop 1
  390. ''    END IF
  391.  
  392.     TxtView$ = GetIniKeyString("WIN.INI","Extensions","txt")
  393.     if TxtView$<>"" then
  394.         i% = InStr(TxtView$," ")
  395.         if i% > 0 then
  396.             TxtView$ = mid$(TxtView$, 1, i%)
  397.             '''McbTxt$ = TxtView$ + MakePath(MCBDEST$, "readme.txt")
  398.             RegView$ = TxtView$ + MakePath(DEST$,"register.txt")
  399.             TxtView$ = TxtView$ + MakePath(DEST$,"readme.txt")
  400.         end if
  401.     end if
  402.  
  403.     HlpView$=GetIniKeyString("WIN.INI", "Extensions", "hlp")
  404.     if HlpView$<>"" then
  405.         i%=InStr(HlpView$," ")
  406.         if i%>0 then
  407.             HlpView$ = mid$(HlpView$, 1, i%)
  408.             '''McbHlp$ = HlpView$ + MakePath(MCBDEST$, "cb40.hlp")
  409.             HlpView$ = HlpView$ + MakePath(DEST$,"cookwrks.hlp")
  410.         end if
  411.     end if
  412.  
  413.     CreateProgmanGroup "CookWorks", "", cmoNone
  414.     ShowProgmanGroup  "CookWorks", 1, cmoNone
  415.  
  416.     if szIconLabel$ = "" then 
  417.         szIconLabel$ = "CookWorks Electronic Books"
  418.     endif
  419.     CreateProgmanItem "CookWorks", szIconLabel$, MakePath(DEST$,"cookwrks.exe"), "", cmoOverwrite
  420.  
  421.     if TxtView$ <> "" then
  422.         CreateProgmanItem "CookWorks", "CookWorks Read Me", TxtView$, "", cmoOverwrite
  423.         CreateProgmanItem "CookWorks", "CookWorks Registration", RegView$, MakePath(DEST$, "cookwrks.exe, 1"), cmoOverwrite
  424.     end if
  425.  
  426.     if HlpView$ <> "" then
  427.         CreateProgmanItem "CookWorks", "CookWorks Help", HlpView$, "", cmoOverwrite
  428.     end if
  429.  
  430. ''    IF MCBINSTMODE$ = "FULL" THEN
  431. ''        CreateProgmanGroup "Micro Cookbook 4.0", "", cmoNone
  432. ''        ShowProgmanGroup "Micro Cookbook 4.0", 1, cmoNone
  433. ''        CreateProgmanItem "Micro Cookbook 4.0", "Micro Cookbook", MakePath(MCBDEST$, "cookbook.exe"), "", cmoOverwrite
  434. ''        IF McbTxt$ <> "" THEN
  435. ''            CreateProgmanItem "Micro Cookbook 4.0", "Micro Cookbook Read Me", McbTxt$, "", cmoOverwrite
  436. ''        END IF
  437. ''        IF McbHlp$ <> "" THEN
  438. ''            CreateProgmanItem "Micro Cookbook 4.0", "Micro Cookbook Help", McbHlp$, "", cmoOverwrite
  439. ''        END IF
  440. ''    END IF
  441.  
  442.     if TxtView$ <> "" then
  443.         Run TxtView$
  444.     else
  445.         if HlpView$ <> "" then
  446.             Run HlpView$
  447.         end if
  448.     else
  449.         rz$ = "Important information is contained in the README.TXT file, but you need a text editor in order to read it."
  450.         i% = DoMsgBox(rz$, "Setup Error", IDOK)
  451.     end if
  452. END SUB
  453.  
  454. '**
  455. '** Purpose:
  456. '**     Appends a file name to the end of a directory path,
  457. '**     inserting a backslash character as needed.
  458. '** Arguments:
  459. '**     szDir$  - full directory path (with optional ending "\")
  460. '**     szFile$ - filename to append to directory
  461. '** Returns:
  462. '**     Resulting fully qualified path name.
  463. '*************************************************************************
  464.  
  465. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  466.     IF szDir$ = "" THEN
  467.         MakePath = szFile$
  468.     ELSEIF szFile$ = "" THEN
  469.         MakePath = szDir$
  470.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  471.         IF MID$(szFile$, 1, 1) = "\" THEN
  472.             szFile$ = MID$(szFile$, 2, LEN(szFile$) - 1)
  473.         END IF
  474.         MakePath = szDir$ + szFile$
  475.     ELSE
  476.         IF MID$(szFile$, 1, 1) = "\" THEN
  477.             MakePath = szDir$ + szFile$
  478.         ELSE
  479.             MakePath = szDir$ + "\" + szFile$
  480.         END IF
  481.     END IF
  482. END FUNCTION
  483.  
  484.